package com.utils;

import com.aliyun.oss.event.ProgressEvent;
import com.aliyun.oss.event.ProgressEventType;
import com.aliyun.oss.event.ProgressListener;

/**
 * @author yy
 */
public class PutObjectProgressListener implements ProgressListener {
	  private long bytesWritten = 0; 
	  private long totalBytes = -1;
	  private boolean succeed = false;
	  @Override 
	  public void progressChanged(ProgressEvent progressEvent) {
	    
		
		  long bytes = progressEvent.getBytes();
	      ProgressEventType eventType = progressEvent.getEventType();
	      switch (eventType) {
	      case TRANSFER_STARTED_EVENT:
	         System.out.println("开始上传......");
	           break;
	      case REQUEST_CONTENT_LENGTH_EVENT:
	            this.totalBytes = bytes;
	            System.out.println(this.totalBytes + " 字节已经上传完成");
	            break;
	        case REQUEST_BYTE_TRANSFER_EVENT:
	            this.bytesWritten += bytes;
	            
	           if (this.totalBytes != -1) {
	                int percent = (int)(this.bytesWritten * 100.0 / this.totalBytes);
	                System.out.println(bytes + " bytes have been written at this time, upload progress: " + percent + 
                        
"%(" + this.bytesWritten + "/" + this.totalBytes + ")");
	            } else {
	                System.out.println(bytes + " bytes have been written at this time, upload ratio: unknown" + "(" + 

this.bytesWritten + "/...)");
	           }
	            break;
	       case TRANSFER_COMPLETED_EVENT:
	            this.succeed = true;
	           System.out.println("上传完成, " + this.bytesWritten + " 字节共计上传");
	           break;
	        case TRANSFER_FAILED_EVENT:
	            System.out.println("上传失败, " + this.bytesWritten + " 字节共计上传");
	            break;
	        default:
	            break;
	  }
	  
 }
	  public boolean isSucceed() {
	       return succeed;
	   }
	 
}
